package com.simpou.commons.utils.reflection.condition;

import com.simpou.commons.utils.behavior.Condition;
import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * Condições que exige que um elemento esteja anotado com uma determinada anotação.
 * 
 * @author Jonas Pereira
 * @since 2013-09-17
 */
@AllArgsConstructor
public class AnnotatedElementCondition<T extends AnnotatedElement> implements Condition<T> {

    @Getter
    private final Class<? extends Annotation>  annotation;
    
    @Override
    public boolean check(final T obj) {
        return obj.isAnnotationPresent(annotation);
    }

}
